/**
	Pulsar engine. Additional include file.
	Memory manager (MSVC compatible).

	Copyright (C) 2013-2014 Dmitry Dolgov

	This program is free software; you can redistribute it and/or modify it under the terms of the
	GNU General Public License as published by the Free Software Foundation; either version 2 of
	the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
	without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	See the GNU General Public License for more details.
*/

#if !defined(__PL_NO_MEMORY_MAPPING__)

#define PL_DEFAULT_ALLOC_ALIGN 16

#if defined(PL_MEMORY_DEBUG)

void* __cdecl operator new (::size_t size, const pl_char* file, unsigned int line, const pl_char* func) throw(::std ::bad_alloc);
void* __cdecl operator new [] (::size_t size, const pl_char* file, unsigned int line, const pl_char* func) throw(::std ::bad_alloc);
void* __cdecl operator new (::size_t size, const ::std::nothrow_t &, const pl_char* file, unsigned int line, const pl_char* func) throw();
void* __cdecl operator new [] (::size_t size, const ::std::nothrow_t &, const pl_char* file, unsigned int line, const pl_char* func) throw();
void __cdecl operator delete (void* p, const pl_char* file, unsigned int line, const pl_char* func) throw (std::bad_alloc);
void __cdecl operator delete [] (void* p, const pl_char* file, unsigned int line, const pl_char* func) throw (std::bad_alloc);

#elif defined(PL_MEMORY_RELEASE) || defined(PL_MEMORY_FINAL)

void* __cdecl operator new (::size_t size, const ::std::nothrow_t &) throw();
void* __cdecl operator new [] (::size_t size, const ::std::nothrow_t &) throw();
void* __cdecl operator new (::size_t size) throw(::std ::bad_alloc);
void* __cdecl operator new [] (::size_t size) throw(::std ::bad_alloc);
void __cdecl operator delete (void* p, const ::std::nothrow_t &) throw();
void __cdecl operator delete [] (void* p, const ::std::nothrow_t &) throw();
void __cdecl operator delete (void* p) throw();
void __cdecl operator delete [] (void* p) throw();

#elif defined(PL_MEMORY_NONE)

// Do nothing

#else
#error "Wrong memory manager settings"
#endif

#endif

//
// End of file 'pulsar_memory_gcc.h'
//
